<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>L2LB: Referência ao ficheiro hash_table.h</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Gerado por Doxygen 1.5.6 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Página&nbsp;principal</span></a></li>
      <li><a href="annotated.html"><span>Estruturas&nbsp;de&nbsp;dados</span></a></li>
      <li class="current"><a href="files.html"><span>Ficheiros</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>Referência ao ficheiro hash_table.h</h1><code>#include &lt;pthread.h&gt;</code><br>
<code>#include &quot;<a class="el" href="list_8h-source.html">list.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="hash__function_8h-source.html">hash_function.h</a>&quot;</code><br>

<p>
<a href="hash__table_8h-source.html">Ir para o código fonte deste ficheiro.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Estruturas de Dados</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structhash__entry.html">hash_entry</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structhash__table.html">hash_table</a></td></tr>

<tr><td colspan="2"><br><h2>Macros</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#df4781875a3f7c7d3cd5b90f736a7e26">BUCKET_BITLEN</a>&nbsp;&nbsp;&nbsp;32</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#6d96b1b753cb4969aaa7f782021bcf5b">hash_entry</a>(ptr, type, member)&nbsp;&nbsp;&nbsp;((type *)((char *)(ptr)-(unsigned long)(&amp;((type *)0)-&gt;member)))</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="structhash__entry.html">hash_entry</a> - get the user data for this entry : the &amp;struct <a class="el" href="structhash__entry.html">hash_entry</a> pointer : the type of the user data (e.g.  <a href="#6d96b1b753cb4969aaa7f782021bcf5b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#ca4be66f0e2f9faa7c47324d54a7c172">hash_table_for_each</a>(hentry, htable)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#98de86153912bbf3fa3c88cf06be211e">hash_table_for_each_safe</a>(hentry, htable, pos, hti)</td></tr>

<tr><td colspan="2"><br><h2>Definições de tipos</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#3d5ec14056d7480c722de378cf762198">keycmp_ptr</a> )(const void *, const void *, size_t)</td></tr>

<tr><td colspan="2"><br><h2>Funções</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#e9600b4d6f7ce6395d53b2858953c76f">hash_table_bucket_lock</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *t, unsigned int n)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#48f875515f654fd00e016384de1f14d9">hash_table_bucket_unlock</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *t, unsigned int n)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#6ee43184883ee97c4f19b4e85549b5dc">hash_table_lock</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *t)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#21dc15c7b9538d15e19afffca43d9053">hash_table_unlock</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *t)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#2c3068f078190c2b4d9416576a30f548">hash_table_bucket_locked</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *t, unsigned int n)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#0ddc013a986dacb55b81875438bc2e0a">hash_table_locked</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *t)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#b80477ad6e8ad63b4ea83252c67392f1">hash_table_hash_code</a> (const struct <a class="el" href="structhash__table.html">hash_table</a> *t, const char *key, unsigned int len)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#fb170aef9a24093e681f4f136f5fc404">hash_table_hash_code_safe</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *t, const char *key, unsigned int len)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#a1824f6d7b4c63926ccdfd86eb020c08">hash_entry_init</a> (struct <a class="el" href="structhash__entry.html">hash_entry</a> *e, const unsigned char *str, unsigned int len)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#2b79db78da4c673932780dc1178ae7d8">hash_entry_finit</a> (struct <a class="el" href="structhash__entry.html">hash_entry</a> *e)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#7e37848bc7e0e4fe223f633949331aa4">hash_table_init</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *h, unsigned int b, <a class="el" href="hash__table_8h.html#3d5ec14056d7480c722de378cf762198">keycmp_ptr</a> keycmp)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#506d39e2faf00001f5354fd67ffaf590">hash_table_finit</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *h)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#b169c085175842723f0b8ef86d138f0c">hash_table_insert</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *h, struct <a class="el" href="structhash__entry.html">hash_entry</a> *e, const unsigned char *key, unsigned int len)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#fce52c7df56ac3debdbeb4cdd767823f">hash_table_insert_safe</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *h, struct <a class="el" href="structhash__entry.html">hash_entry</a> *e, const unsigned char *key, unsigned int len)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structhash__entry.html">hash_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#26234bcfb00e679df2eb4b8e1476a9d5">hash_table_lookup_key</a> (const struct <a class="el" href="structhash__table.html">hash_table</a> *h, const unsigned char *str, unsigned int len)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structhash__entry.html">hash_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#c20b239fac318b4a3f07951f67443485">hash_table_lookup_key_safe</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *h, const unsigned char *str, unsigned int len)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structhash__entry.html">hash_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#251fb227e81f38d9c3526696e760ca31">hash_table_lookup_hash_entry</a> (const struct <a class="el" href="structhash__table.html">hash_table</a> *h, const struct <a class="el" href="structhash__entry.html">hash_entry</a> *e)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structhash__entry.html">hash_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#652be46a5fbf96645b384492f8c04644">hash_table_lookup_hash_entry_safe</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *h, const struct <a class="el" href="structhash__entry.html">hash_entry</a> *e)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structhash__entry.html">hash_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#41c85ba1ce95224217a063dc322f815c">hash_table_del_key</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *h, const char *str, unsigned int len)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structhash__entry.html">hash_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#700e46956ce396aebc18e2dc902d072a">hash_table_del_key_safe</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *h, const char *str, unsigned int len)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structhash__entry.html">hash_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#3577eebac3c7b1338dc8b0bded0441ab">hash_table_del_hash_entry</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *h, struct <a class="el" href="structhash__entry.html">hash_entry</a> *e)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structhash__entry.html">hash_entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hash__table_8h.html#1e29b091dbabf9bdf181bd5ee7162162">hash_table_del_hash_entry_safe</a> (struct <a class="el" href="structhash__table.html">hash_table</a> *h, struct <a class="el" href="structhash__entry.html">hash_entry</a> *e)</td></tr>

</table>
<hr><h2>Documentação das macros</h2>
<a class="anchor" name="df4781875a3f7c7d3cd5b90f736a7e26"></a><!-- doxytag: member="hash_table.h::BUCKET_BITLEN" ref="df4781875a3f7c7d3cd5b90f736a7e26" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BUCKET_BITLEN&nbsp;&nbsp;&nbsp;32          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00016">16</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="6d96b1b753cb4969aaa7f782021bcf5b"></a><!-- doxytag: member="hash_table.h::hash_entry" ref="6d96b1b753cb4969aaa7f782021bcf5b" args="(ptr, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define <a class="el" href="structhash__entry.html">hash_entry</a>          </td>
          <td>(</td>
          <td class="paramtype">ptr,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">type,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">member&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;((type *)((char *)(ptr)-(unsigned long)(&amp;((type *)0)-&gt;member)))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="structhash__entry.html">hash_entry</a> - get the user data for this entry : the &amp;struct <a class="el" href="structhash__entry.html">hash_entry</a> pointer : the type of the user data (e.g. 
<p>
struct my_data) embedded in this entry : the name of the <a class="el" href="structhash__entry.html">hash_entry</a> within the struct (e.g. entry) 
<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00337">337</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referenciado por <a class="el" href="test__hashtable_8c-source.html#l00025">main()</a>.</p>

</div>
</div><p>
<a class="anchor" name="ca4be66f0e2f9faa7c47324d54a7c172"></a><!-- doxytag: member="hash_table.h::hash_table_for_each" ref="ca4be66f0e2f9faa7c47324d54a7c172" args="(hentry, htable)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define hash_table_for_each          </td>
          <td>(</td>
          <td class="paramtype">hentry,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">htable&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<b>Valor:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">for</span>     ((htable)-&gt;__ht_i=0; ((htable)-&gt;__ht_i &lt; (htable)-&gt;buckets); ++((htable)-&gt;__ht_i))      \
                <span class="keywordflow">for</span>(((htable)-&gt;pos= (htable)-&gt;table[(htable)-&gt;__ht_i].list.next);               \
                                ((htable)-&gt;pos != &amp;((htable)-&gt;table[(htable)-&gt;__ht_i].list)) &amp;&amp; \
                                ((hentry) = ((<span class="keyword">struct </span><a class="code" href="structhash__entry.html">hash_entry</a> *)((<span class="keywordtype">char</span> *)((htable)-&gt;pos)-(<span class="keywordtype">unsigned</span> long)(&amp;((<span class="keyword">struct</span> <a class="code" href="structhash__entry.html">hash_entry</a> *)0)-&gt;list))) );        \
                                (htable)-&gt;pos= (htable)-&gt;pos-&gt;next)
</pre></div>
<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00344">344</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referenciado por <a class="el" href="test__hashtable_8c-source.html#l00025">main()</a>.</p>

</div>
</div><p>
<a class="anchor" name="98de86153912bbf3fa3c88cf06be211e"></a><!-- doxytag: member="hash_table.h::hash_table_for_each_safe" ref="98de86153912bbf3fa3c88cf06be211e" args="(hentry, htable, pos, hti)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define hash_table_for_each_safe          </td>
          <td>(</td>
          <td class="paramtype">hentry,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">htable,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">pos,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">hti&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<b>Valor:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">for</span>     ((hti)=0; ((hti) &lt; (htable)-&gt;buckets); ++(hti)) \
                <span class="keywordflow">for</span>(((pos)= (htable)-&gt;table[(hti)].list.next);          \
                                ((pos) != &amp;((htable)-&gt;table[(hti)].<a class="code" href="structhash__entry.html#da52d1b11e544cd19b58007cc3713069">list</a>)) &amp;&amp;    \
                                ((hentry) = ((<span class="keyword">struct </span><a class="code" href="structhash__entry.html">hash_entry</a> *)((<span class="keywordtype">char</span> *)((pos))-(<span class="keywordtype">unsigned</span> long)(&amp;((<span class="keyword">struct</span> <a class="code" href="structhash__entry.html">hash_entry</a> *)0)-&gt;<a class="code" href="structhash__entry.html#da52d1b11e544cd19b58007cc3713069">list</a>))) );        \
                                (pos)= (pos)-&gt;next)
</pre></div>
<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00357">357</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

</div>
</div><p>
<hr><h2>Documentação dos tipos</h2>
<a class="anchor" name="3d5ec14056d7480c722de378cf762198"></a><!-- doxytag: member="hash_table.h::keycmp_ptr" ref="3d5ec14056d7480c722de378cf762198" args=")(const void *, const void *, size_t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int(* <a class="el" href="hash__table_8h.html#3d5ec14056d7480c722de378cf762198">keycmp_ptr</a>)(const void *, const void *, size_t)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00018">18</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

</div>
</div><p>
<hr><h2>Documentação das funções</h2>
<a class="anchor" name="2b79db78da4c673932780dc1178ae7d8"></a><!-- doxytag: member="hash_table.h::hash_entry_finit" ref="2b79db78da4c673932780dc1178ae7d8" args="(struct hash_entry *e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void hash_entry_finit           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__entry.html">hash_entry</a> *&nbsp;</td>
          <td class="paramname"> <em>e</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00119">119</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00022">hash_entry::key</a> e <a class="el" href="hash__table_8h-source.html#l00023">hash_entry::keylen</a>.</p>

</div>
</div><p>
<a class="anchor" name="a1824f6d7b4c63926ccdfd86eb020c08"></a><!-- doxytag: member="hash_table.h::hash_entry_init" ref="a1824f6d7b4c63926ccdfd86eb020c08" args="(struct hash_entry *e, const unsigned char *str, unsigned int len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int hash_entry_init           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__entry.html">hash_entry</a> *&nbsp;</td>
          <td class="paramname"> <em>e</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00104">104</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="list_8h-source.html#l00030">INIT_LIST_HEAD</a>, <a class="el" href="hash__table_8h-source.html#l00022">hash_entry::key</a>, <a class="el" href="hash__table_8h-source.html#l00023">hash_entry::keylen</a> e <a class="el" href="hash__table_8h-source.html#l00021">hash_entry::list</a>.</p>

<p>Referenciado por <a class="el" href="hash__table_8h-source.html#l00126">hash_table_init()</a>, <a class="el" href="hash__table_8h-source.html#l00171">hash_table_insert()</a> e <a class="el" href="hash__table_8h-source.html#l00189">hash_table_insert_safe()</a>.</p>

</div>
</div><p>
<a class="anchor" name="e9600b4d6f7ce6395d53b2858953c76f"></a><!-- doxytag: member="hash_table.h::hash_table_bucket_lock" ref="e9600b4d6f7ce6395d53b2858953c76f" args="(struct hash_table *t, unsigned int n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int hash_table_bucket_lock           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>n</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00043">43</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00033">hash_table::bucket_locks</a>.</p>

<p>Referenciado por <a class="el" href="hash__table_8h-source.html#l00300">hash_table_del_key_safe()</a>, <a class="el" href="hash__table_8h-source.html#l00189">hash_table_insert_safe()</a> e <a class="el" href="hash__table_8h-source.html#l00241">hash_table_lookup_key_safe()</a>.</p>

</div>
</div><p>
<a class="anchor" name="2c3068f078190c2b4d9416576a30f548"></a><!-- doxytag: member="hash_table.h::hash_table_bucket_locked" ref="2c3068f078190c2b4d9416576a30f548" args="(struct hash_table *t, unsigned int n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int hash_table_bucket_locked           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>n</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00074">74</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="48f875515f654fd00e016384de1f14d9"></a><!-- doxytag: member="hash_table.h::hash_table_bucket_unlock" ref="48f875515f654fd00e016384de1f14d9" args="(struct hash_table *t, unsigned int n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int hash_table_bucket_unlock           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>n</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00048">48</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00033">hash_table::bucket_locks</a>.</p>

<p>Referenciado por <a class="el" href="hash__table_8h-source.html#l00300">hash_table_del_key_safe()</a>, <a class="el" href="hash__table_8h-source.html#l00189">hash_table_insert_safe()</a> e <a class="el" href="hash__table_8h-source.html#l00241">hash_table_lookup_key_safe()</a>.</p>

</div>
</div><p>
<a class="anchor" name="3577eebac3c7b1338dc8b0bded0441ab"></a><!-- doxytag: member="hash_table.h::hash_table_del_hash_entry" ref="3577eebac3c7b1338dc8b0bded0441ab" args="(struct hash_table *h, struct hash_entry *e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static struct <a class="el" href="structhash__entry.html">hash_entry</a>* hash_table_del_hash_entry           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>h</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structhash__entry.html">hash_entry</a> *&nbsp;</td>
          <td class="paramname"> <em>e</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static, read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00317">317</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00288">hash_table_del_key()</a>, <a class="el" href="hash__table_8h-source.html#l00022">hash_entry::key</a> e <a class="el" href="hash__table_8h-source.html#l00023">hash_entry::keylen</a>.</p>

</div>
</div><p>
<a class="anchor" name="1e29b091dbabf9bdf181bd5ee7162162"></a><!-- doxytag: member="hash_table.h::hash_table_del_hash_entry_safe" ref="1e29b091dbabf9bdf181bd5ee7162162" args="(struct hash_table *h, struct hash_entry *e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static struct <a class="el" href="structhash__entry.html">hash_entry</a>* hash_table_del_hash_entry_safe           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>h</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structhash__entry.html">hash_entry</a> *&nbsp;</td>
          <td class="paramname"> <em>e</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static, read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00323">323</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00300">hash_table_del_key_safe()</a>, <a class="el" href="hash__table_8h-source.html#l00022">hash_entry::key</a> e <a class="el" href="hash__table_8h-source.html#l00023">hash_entry::keylen</a>.</p>

</div>
</div><p>
<a class="anchor" name="41c85ba1ce95224217a063dc322f815c"></a><!-- doxytag: member="hash_table.h::hash_table_del_key" ref="41c85ba1ce95224217a063dc322f815c" args="(struct hash_table *h, const char *str, unsigned int len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structhash__entry.html">hash_entry</a>* hash_table_del_key           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>h</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00288">288</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00213">hash_table_lookup_key()</a>, <a class="el" href="hash__table_8h-source.html#l00021">hash_entry::list</a> e <a class="el" href="list_8h-source.html#l00104">list_del_init()</a>.</p>

<p>Referenciado por <a class="el" href="hash__table_8h-source.html#l00317">hash_table_del_hash_entry()</a>.</p>

</div>
</div><p>
<a class="anchor" name="700e46956ce396aebc18e2dc902d072a"></a><!-- doxytag: member="hash_table.h::hash_table_del_key_safe" ref="700e46956ce396aebc18e2dc902d072a" args="(struct hash_table *h, const char *str, unsigned int len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structhash__entry.html">hash_entry</a>* hash_table_del_key_safe           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>h</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00300">300</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00043">hash_table_bucket_lock()</a>, <a class="el" href="hash__table_8h-source.html#l00048">hash_table_bucket_unlock()</a>, <a class="el" href="hash__table_8h-source.html#l00085">hash_table_hash_code()</a>, <a class="el" href="hash__table_8h-source.html#l00213">hash_table_lookup_key()</a>, <a class="el" href="hash__table_8h-source.html#l00021">hash_entry::list</a> e <a class="el" href="list_8h-source.html#l00104">list_del_init()</a>.</p>

<p>Referenciado por <a class="el" href="hash__table_8h-source.html#l00323">hash_table_del_hash_entry_safe()</a>.</p>

</div>
</div><p>
<a class="anchor" name="506d39e2faf00001f5354fd67ffaf590"></a><!-- doxytag: member="hash_table.h::hash_table_finit" ref="506d39e2faf00001f5354fd67ffaf590" args="(struct hash_table *h)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void hash_table_finit           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>h</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00158">158</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00032">hash_table::buckets</a> e <a class="el" href="hash__table_8h-source.html#l00030">hash_table::table</a>.</p>

<p>Referenciado por <a class="el" href="test__hashtable_8c-source.html#l00025">main()</a>.</p>

</div>
</div><p>
<a class="anchor" name="b80477ad6e8ad63b4ea83252c67392f1"></a><!-- doxytag: member="hash_table.h::hash_table_hash_code" ref="b80477ad6e8ad63b4ea83252c67392f1" args="(const struct hash_table *t, const char *key, unsigned int len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int hash_table_hash_code           </td>
          <td>(</td>
          <td class="paramtype">const struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00085">85</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__function_8h-source.html#l00019">__hash()</a> e <a class="el" href="hash__table_8h-source.html#l00032">hash_table::buckets</a>.</p>

<p>Referenciado por <a class="el" href="hash__table_8h-source.html#l00300">hash_table_del_key_safe()</a>, <a class="el" href="hash__table_8h-source.html#l00171">hash_table_insert()</a>, <a class="el" href="hash__table_8h-source.html#l00213">hash_table_lookup_key()</a> e <a class="el" href="test__hashtable_8c-source.html#l00025">main()</a>.</p>

</div>
</div><p>
<a class="anchor" name="fb170aef9a24093e681f4f136f5fc404"></a><!-- doxytag: member="hash_table.h::hash_table_hash_code_safe" ref="fb170aef9a24093e681f4f136f5fc404" args="(struct hash_table *t, const char *key, unsigned int len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int hash_table_hash_code_safe           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00092">92</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__function_8h-source.html#l00019">__hash()</a>, <a class="el" href="hash__table_8h-source.html#l00032">hash_table::buckets</a>, <a class="el" href="hash__table_8h-source.html#l00053">hash_table_lock()</a> e <a class="el" href="hash__table_8h-source.html#l00058">hash_table_unlock()</a>.</p>

<p>Referenciado por <a class="el" href="hash__table_8h-source.html#l00189">hash_table_insert_safe()</a> e <a class="el" href="hash__table_8h-source.html#l00241">hash_table_lookup_key_safe()</a>.</p>

</div>
</div><p>
<a class="anchor" name="7e37848bc7e0e4fe223f633949331aa4"></a><!-- doxytag: member="hash_table.h::hash_table_init" ref="7e37848bc7e0e4fe223f633949331aa4" args="(struct hash_table *h, unsigned int b, keycmp_ptr keycmp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int hash_table_init           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>h</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="hash__table_8h.html#3d5ec14056d7480c722de378cf762198">keycmp_ptr</a>&nbsp;</td>
          <td class="paramname"> <em>keycmp</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00126">126</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00033">hash_table::bucket_locks</a>, <a class="el" href="hash__table_8h-source.html#l00032">hash_table::buckets</a>, <a class="el" href="hash__table_8h-source.html#l00104">hash_entry_init()</a>, <a class="el" href="hash__table_8h-source.html#l00036">hash_table::keycmp</a>, <a class="el" href="hash__table_8h-source.html#l00035">hash_table::lock</a> e <a class="el" href="hash__table_8h-source.html#l00030">hash_table::table</a>.</p>

<p>Referenciado por <a class="el" href="test__hashtable_8c-source.html#l00025">main()</a>.</p>

</div>
</div><p>
<a class="anchor" name="b169c085175842723f0b8ef86d138f0c"></a><!-- doxytag: member="hash_table.h::hash_table_insert" ref="b169c085175842723f0b8ef86d138f0c" args="(struct hash_table *h, struct hash_entry *e, const unsigned char *key, unsigned int len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void hash_table_insert           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>h</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structhash__entry.html">hash_entry</a> *&nbsp;</td>
          <td class="paramname"> <em>e</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00171">171</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00104">hash_entry_init()</a>, <a class="el" href="hash__table_8h-source.html#l00085">hash_table_hash_code()</a>, <a class="el" href="hash__table_8h-source.html#l00021">hash_entry::list</a>, <a class="el" href="list_8h-source.html#l00057">list_add()</a> e <a class="el" href="hash__table_8h-source.html#l00030">hash_table::table</a>.</p>

<p>Referenciado por <a class="el" href="test__hashtable_8c-source.html#l00025">main()</a>.</p>

</div>
</div><p>
<a class="anchor" name="fce52c7df56ac3debdbeb4cdd767823f"></a><!-- doxytag: member="hash_table.h::hash_table_insert_safe" ref="fce52c7df56ac3debdbeb4cdd767823f" args="(struct hash_table *h, struct hash_entry *e, const unsigned char *key, unsigned int len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void hash_table_insert_safe           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>h</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structhash__entry.html">hash_entry</a> *&nbsp;</td>
          <td class="paramname"> <em>e</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00189">189</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00104">hash_entry_init()</a>, <a class="el" href="hash__table_8h-source.html#l00043">hash_table_bucket_lock()</a>, <a class="el" href="hash__table_8h-source.html#l00048">hash_table_bucket_unlock()</a>, <a class="el" href="hash__table_8h-source.html#l00092">hash_table_hash_code_safe()</a>, <a class="el" href="hash__table_8h-source.html#l00021">hash_entry::list</a>, <a class="el" href="list_8h-source.html#l00057">list_add()</a> e <a class="el" href="hash__table_8h-source.html#l00030">hash_table::table</a>.</p>

</div>
</div><p>
<a class="anchor" name="6ee43184883ee97c4f19b4e85549b5dc"></a><!-- doxytag: member="hash_table.h::hash_table_lock" ref="6ee43184883ee97c4f19b4e85549b5dc" args="(struct hash_table *t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int hash_table_lock           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00053">53</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00035">hash_table::lock</a>.</p>

<p>Referenciado por <a class="el" href="hash__table_8h-source.html#l00092">hash_table_hash_code_safe()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0ddc013a986dacb55b81875438bc2e0a"></a><!-- doxytag: member="hash_table.h::hash_table_locked" ref="0ddc013a986dacb55b81875438bc2e0a" args="(struct hash_table *t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int hash_table_locked           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00079">79</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="251fb227e81f38d9c3526696e760ca31"></a><!-- doxytag: member="hash_table.h::hash_table_lookup_hash_entry" ref="251fb227e81f38d9c3526696e760ca31" args="(const struct hash_table *h, const struct hash_entry *e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static struct <a class="el" href="structhash__entry.html">hash_entry</a>* hash_table_lookup_hash_entry           </td>
          <td>(</td>
          <td class="paramtype">const struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>h</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const struct <a class="el" href="structhash__entry.html">hash_entry</a> *&nbsp;</td>
          <td class="paramname"> <em>e</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static, read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00269">269</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00213">hash_table_lookup_key()</a>, <a class="el" href="hash__table_8h-source.html#l00022">hash_entry::key</a> e <a class="el" href="hash__table_8h-source.html#l00023">hash_entry::keylen</a>.</p>

</div>
</div><p>
<a class="anchor" name="652be46a5fbf96645b384492f8c04644"></a><!-- doxytag: member="hash_table.h::hash_table_lookup_hash_entry_safe" ref="652be46a5fbf96645b384492f8c04644" args="(struct hash_table *h, const struct hash_entry *e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static struct <a class="el" href="structhash__entry.html">hash_entry</a>* hash_table_lookup_hash_entry_safe           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>h</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const struct <a class="el" href="structhash__entry.html">hash_entry</a> *&nbsp;</td>
          <td class="paramname"> <em>e</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static, read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00281">281</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00241">hash_table_lookup_key_safe()</a>, <a class="el" href="hash__table_8h-source.html#l00022">hash_entry::key</a> e <a class="el" href="hash__table_8h-source.html#l00023">hash_entry::keylen</a>.</p>

</div>
</div><p>
<a class="anchor" name="26234bcfb00e679df2eb4b8e1476a9d5"></a><!-- doxytag: member="hash_table.h::hash_table_lookup_key" ref="26234bcfb00e679df2eb4b8e1476a9d5" args="(const struct hash_table *h, const unsigned char *str, unsigned int len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structhash__entry.html">hash_entry</a>* hash_table_lookup_key           </td>
          <td>(</td>
          <td class="paramtype">const struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>h</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00213">213</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00085">hash_table_hash_code()</a>, <a class="el" href="hash__table_8h-source.html#l00022">hash_entry::key</a>, <a class="el" href="hash__table_8h-source.html#l00036">hash_table::keycmp</a>, <a class="el" href="hash__table_8h-source.html#l00023">hash_entry::keylen</a>, <a class="el" href="hash__table_8h-source.html#l00021">hash_entry::list</a>, <a class="el" href="list_8h-source.html#l00188">list_entry</a>, <a class="el" href="list_8h-source.html#l00196">list_for_each</a> e <a class="el" href="hash__table_8h-source.html#l00030">hash_table::table</a>.</p>

<p>Referenciado por <a class="el" href="hash__table_8h-source.html#l00288">hash_table_del_key()</a>, <a class="el" href="hash__table_8h-source.html#l00300">hash_table_del_key_safe()</a>, <a class="el" href="hash__table_8h-source.html#l00269">hash_table_lookup_hash_entry()</a> e <a class="el" href="test__hashtable_8c-source.html#l00025">main()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c20b239fac318b4a3f07951f67443485"></a><!-- doxytag: member="hash_table.h::hash_table_lookup_key_safe" ref="c20b239fac318b4a3f07951f67443485" args="(struct hash_table *h, const unsigned char *str, unsigned int len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structhash__entry.html">hash_entry</a>* hash_table_lookup_key_safe           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>h</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00241">241</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00043">hash_table_bucket_lock()</a>, <a class="el" href="hash__table_8h-source.html#l00048">hash_table_bucket_unlock()</a>, <a class="el" href="hash__table_8h-source.html#l00092">hash_table_hash_code_safe()</a>, <a class="el" href="hash__table_8h-source.html#l00022">hash_entry::key</a>, <a class="el" href="hash__table_8h-source.html#l00023">hash_entry::keylen</a>, <a class="el" href="hash__table_8h-source.html#l00021">hash_entry::list</a>, <a class="el" href="list_8h-source.html#l00188">list_entry</a>, <a class="el" href="list_8h-source.html#l00196">list_for_each</a> e <a class="el" href="hash__table_8h-source.html#l00030">hash_table::table</a>.</p>

<p>Referenciado por <a class="el" href="hash__table_8h-source.html#l00281">hash_table_lookup_hash_entry_safe()</a>.</p>

</div>
</div><p>
<a class="anchor" name="21dc15c7b9538d15e19afffca43d9053"></a><!-- doxytag: member="hash_table.h::hash_table_unlock" ref="21dc15c7b9538d15e19afffca43d9053" args="(struct hash_table *t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int hash_table_unlock           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structhash__table.html">hash_table</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definido na linha <a class="el" href="hash__table_8h-source.html#l00058">58</a> do ficheiro <a class="el" href="hash__table_8h-source.html">hash_table.h</a>.</p>

<p>Referências <a class="el" href="hash__table_8h-source.html#l00035">hash_table::lock</a>.</p>

<p>Referenciado por <a class="el" href="hash__table_8h-source.html#l00092">hash_table_hash_code_safe()</a>.</p>

</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Gerado em Wed Sep 10 22:06:26 2008 para L2LB por&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
